package com.gopay.common.domain.bank;

import java.io.Serializable;
import java.math.BigDecimal;

import com.gopay.common.constants.bank.BisBankBusinessProd;
import com.gopay.common.constants.bank.BisBankInterfaceChannel;
import com.thoughtworks.xstream.annotations.XStreamOmitField;

/**
 * 
 * @BaseMessage.java
 * @author WangHongFei
 */
public class BaseMessage implements Serializable {

	private static final long serialVersionUID = 8175917337642276075L;

	/**
	 * 订单编号
	 */
	@XStreamOmitField
	protected String orderId;
	
	@XStreamOmitField
	protected String outOrderId;
	/**
	 * 银行订单编号
	 */
	@XStreamOmitField
	protected String bankOrderId;	
	/**
	 * 订单金额
	 */
	@XStreamOmitField
	protected BigDecimal amount;
	/**
	 * 订单时间
	 */
	@XStreamOmitField
	protected String orderDate;
	/**
	 * 请求银行
	 */
	@XStreamOmitField
	protected String bank;
	
	/**
	 * 清算代码
	 */
	@XStreamOmitField
	protected String outStlmCd;
	
	/** 银行业务产品代码 */
	@XStreamOmitField
	protected BisBankBusinessProd bankBusProd;
	
	/** 银行业务产品代码 */
	@XStreamOmitField
	protected BisBankInterfaceChannel bankIntrChann;
	
	/**
	 * 是否支持信用卡充值(true:支持;false:不支持;)
	 */
	@XStreamOmitField
	protected boolean supportCredit =true;
	/** 客户号 */
	@XStreamOmitField
	protected String customerID;
	/**
	 * 特殊信息，用户以上参数无法满足时备用
	 */
	@XStreamOmitField
	protected String special;
	/**
	 * 特殊信息2，用户以上参数无法满足时备用
	 */
	@XStreamOmitField
	protected String special2;
	/**
	 * 特殊信息3，用户以上参数无法满足时备用
	 */
	@XStreamOmitField
	protected String special3;
	/**
     * 特殊信息4，用户以上参数无法满足时备用
     */
    @XStreamOmitField
    protected String special4;
	/**
	 * 是否前台通知
	 */
	@XStreamOmitField
	protected boolean isFront;
	/**
	 * 消息体对应的明文串
	 */
	@XStreamOmitField
    protected String plainMessage;
	/**
	 * 消息体对应的密文串
	 */
	@XStreamOmitField
    protected String signMessage;
    /**
     * 商户号
     */
    @XStreamOmitField
    protected String merID;
    /**
     * 二级商户号
     */
    @XStreamOmitField
    protected String merID2nd;    
    /**
     * 结算账户网点联行号
     */
    @XStreamOmitField
    protected String branchCode;
    /**
     * 交易类型(1:B2B;2:B2C;3:银企直连)
     */
    @XStreamOmitField
    protected int tradeType;
    
    /**
	 * 公钥证书文件路径
	 */
    @XStreamOmitField
	private String publicKeyPath;
	
    /**
     * 一级私钥证书文件路径
     */
    @XStreamOmitField
    private String privateKeyPath;

   	/**
	 * 一级私钥密码
	 */
    @XStreamOmitField
	private String privatePwd;

    /**
     * 二级私钥证书文件路径
     */
    @XStreamOmitField
    private String privateKeyPath2nd;

   	/**
	 * 二级私钥密码
	 */
    @XStreamOmitField
	private String privatePwd2nd;
    
   	/**
	 * 支付地址
	 */
    @XStreamOmitField
	private String payUrl;
    
   	/**
	 * 查询地址
	 */
    @XStreamOmitField
	private String queryUrl;
    
    /**
     * 支付后台通知地址
     */
    @XStreamOmitField
    protected String payRuturnUrl;
    
    /**
     * 支付后前台通知地址
     */
    @XStreamOmitField
    protected String payNotifyUrl;
    
    /**
     * 是否使用海南新生自己的证书
     */
    @XStreamOmitField
    protected boolean isHna = false;
    
   	/**
	 * 银行订单表订单类型字段
	 */
    @XStreamOmitField
	private String bankOrderType;  
    
    /**
     * 订单通知地址
     */
    @XStreamOmitField
    private String notifyUrl;
    /**
     * 是否为小额风险商户(true:是;false:不是;)
     */
    @XStreamOmitField
    protected boolean isSmallMer;
    
    /**
     * 是否为特殊大额商户(true:是;false:不是;)
     */
    @XStreamOmitField
    protected boolean isBigMer;
    
    /**
     * 上送银行二级商户代码
     */
    @XStreamOmitField
    protected String sendBankCustId;
    
    /**
     * 收款账户信息
     */
    @XStreamOmitField
    protected String paymentAccInfo = "";
    
    /**
     * 退款原交易银行订单号
     */
    @XStreamOmitField
    protected String tkOriBankOrderId = "";
    
    /**
     * 原交易订单单号
     */
    @XStreamOmitField
    protected String tkOriOrderId = "";
    /**
     * 冲正原交易订单单号
     */
    @XStreamOmitField
    protected String czOriOrderId = "";
    
    /**
     * 订单状态标示 true-成功  false-非成功
     */
    @XStreamOmitField
    protected boolean  orderStatusMark ;
    
    /**
     * 冲正原交易银行订单号
     */
    @XStreamOmitField
    protected String czOriBankOrderId = "";
    
	/**
	 * APP三方支付商户APPID
	 */
	@XStreamOmitField
	protected String appId;
	/**
	 * APP三方支付商户号密钥
	 */
	@XStreamOmitField
	protected String mchKey;
	/**
	 * 银行返回订单流水号
	 */
	@XStreamOmitField
	private String bankReturnOrderId;
	/**
	 * 是否支持一户一码
	 */
	@XStreamOmitField
	public boolean isMerchantModel=false;
	
	/**
	 * 交易批次号
	 */
	@XStreamOmitField
	protected String transBatchNo;

	/**
	 * 卡类型 05贷记卡 15借记卡 使用BisBankBusinessProd枚举类
	 */
    @XStreamOmitField
	private String cardType;
	
	public String getOutOrderId() {
		return outOrderId;
	}

	public void setOutOrderId(String outOrderId) {
		this.outOrderId = outOrderId;
	}
	
	public BisBankInterfaceChannel getBankIntrChann() {
		return bankIntrChann;
	}

	public void setBankIntrChann(BisBankInterfaceChannel bankIntrChann) {
		this.bankIntrChann = bankIntrChann;
	}

	public BisBankBusinessProd getBankBusProd() {
		return bankBusProd;
	}

	public void setBankBusProd(BisBankBusinessProd bankBusProd) {
		this.bankBusProd = bankBusProd;
	}

	public String getPlainMessage() {
		return plainMessage;
	}

	public void setPlainMessage(String plainMessage) {
		this.plainMessage = plainMessage;
	}
	

	public String getCzOriBankOrderId() {
        return czOriBankOrderId;
    }

    public void setCzOriBankOrderId(String czOriBankOrderId) {
        this.czOriBankOrderId = czOriBankOrderId;
    }

    public String getSignMessage() {
		return signMessage;
	}

	public void setSignMessage(String signMessage) {
		this.signMessage = signMessage;
	}

	public boolean isFront() {
		return isFront;
	}

	public void setFront(boolean isFront) {
		this.isFront = isFront;
	}

	public String getSpecial() {
		return special;
	}

	public void setSpecial(String special) {
		this.special = special;
	}

	public String getSpecial2() {
		return special2;
	}

	public void setSpecial2(String special2) {
		this.special2 = special2;
	}

	public String getSpecial3() {
		return special3;
	}

	public void setSpecial3(String special3) {
		this.special3 = special3;
	}

	public String getOrderId() {
		return orderId;
	}

	public void setOrderId(String orderId) {
		this.orderId = orderId;
	}

	public String getBankOrderId() {
		return bankOrderId;
	}

	public void setBankOrderId(String bankOrderId) {
		this.bankOrderId = bankOrderId;
	}

	public BigDecimal getAmount() {
		return amount;
	}

	public void setAmount(BigDecimal amount) {
		this.amount = amount;
	}

	public String getOrderDate() {
		return orderDate;
	}

	public void setOrderDate(String orderDate) {
		this.orderDate = orderDate;
	}

	public String getBank() {
		return bank;
	}

	public void setBank(String bank) {
		this.bank = bank;
	}

	public String getOutStlmCd() {
		return outStlmCd;
	}

	public void setOutStlmCd(String outStlmCd) {
		this.outStlmCd = outStlmCd;
	}

	public boolean isSupportCredit() {
		return supportCredit;
	}

	public void setSupportCredit(boolean supportCredit) {
		this.supportCredit = supportCredit;
	}

	public String getCustomerID() {
		return customerID;
	}

	public void setCustomerID(String customerID) {
		this.customerID = customerID;
	}

    public String getMerID() {
        return merID;
    }

    public void setMerID(String merID) {
        this.merID = merID;
    }

    public String getMerID2nd() {
		return merID2nd;
	}

	public void setMerID2nd(String merID2nd) {
		this.merID2nd = merID2nd;
	}

	public String getBranchCode() {
		return branchCode;
	}

	public void setBranchCode(String branchCode) {
		this.branchCode = branchCode;
	}

	public int getTradeType() {
        return tradeType;
    }

    public void setTradeType(int tradeType) {
        this.tradeType = tradeType;
    }

	public String getPublicKeyPath() {
		return publicKeyPath;
	}

	public void setPublicKeyPath(String publicKeyPath) {
		this.publicKeyPath = publicKeyPath;
	}

	public String getPrivateKeyPath() {
		return privateKeyPath;
	}

	public void setPrivateKeyPath(String privateKeyPath) {
		this.privateKeyPath = privateKeyPath;
	}

	public String getPrivatePwd() {
		return privatePwd;
	}

	public void setPrivatePwd(String privatePwd) {
		this.privatePwd = privatePwd;
	}

	public String getPrivateKeyPath2nd() {
		return privateKeyPath2nd;
	}

	public void setPrivateKeyPath2nd(String privateKeyPath2nd) {
		this.privateKeyPath2nd = privateKeyPath2nd;
	}

	public String getPrivatePwd2nd() {
		return privatePwd2nd;
	}

	public void setPrivatePwd2nd(String privatePwd2nd) {
		this.privatePwd2nd = privatePwd2nd;
	}

	public String getQueryUrl() {
		return queryUrl;
	}

	public void setQueryUrl(String queryUrl) {
		this.queryUrl = queryUrl;
	}

	public String getPayUrl() {
		return payUrl;
	}

	public void setPayUrl(String payUrl) {
		this.payUrl = payUrl;
	}

	public String getPayRuturnUrl() {
		return payRuturnUrl;
	}

	public void setPayRuturnUrl(String payRuturnUrl) {
		this.payRuturnUrl = payRuturnUrl;
	}

	public String getPayNotifyUrl() {
		return payNotifyUrl;
	}

	public void setPayNotifyUrl(String payNotifyUrl) {
		this.payNotifyUrl = payNotifyUrl;
	}

	public boolean isHna() {
		return isHna;
	}

	public void setIsHna(boolean isHna) {
		this.isHna = isHna;
	}

	public String getBankOrderType() {
		return bankOrderType;
	}

	public void setBankOrderType(String bankOrderType) {
		this.bankOrderType = bankOrderType;
	}

    public boolean isSmallMer() {
        return isSmallMer;
    }

    public void setSmallMer(boolean isSmallMer) {
        this.isSmallMer = isSmallMer;
    }

	public String getNotifyUrl() {
		return notifyUrl;
	}

	public void setNotifyUrl(String notifyUrl) {
		this.notifyUrl = notifyUrl;
	}

	public String getSendBankCustId() {
		return sendBankCustId;
	}

	public void setSendBankCustId(String sendBankCustId) {
		this.sendBankCustId = sendBankCustId;
	}

    public String getPaymentAccInfo() {
        return paymentAccInfo;
    }

    public void setPaymentAccInfo(String paymentAccInfo) {
        this.paymentAccInfo = paymentAccInfo;
    }
    

    public boolean isOrderStatusMark() {
        return orderStatusMark;
    }

    public void setOrderStatusMark(boolean orderStatusMark) {
        this.orderStatusMark = orderStatusMark;
    }

    public String getTkOriBankOrderId() {
        return tkOriBankOrderId;
    }

    public void setTkOriBankOrderId(String tkOriBankOrderId) {
        this.tkOriBankOrderId = tkOriBankOrderId;
    }

    public String getTkOriOrderId() {
        return tkOriOrderId;
    }

    public void setTkOriOrderId(String tkOriOrderId) {
        this.tkOriOrderId = tkOriOrderId;
    }

	public String getAppId() {
		return appId;
	}

	public void setAppId(String appId) {
		this.appId = appId;
	}

	public String getMchKey() {
		return mchKey;
	}

	public void setMchKey(String mchKey) {
		this.mchKey = mchKey;
	}

    public String getSpecial4() {
        return special4;
    }

    public void setSpecial4(String special4) {
        this.special4 = special4;
    }
    public boolean isBigMer() {
        return isBigMer;
    }

    public void setBigMer(boolean isBigMer) {
        this.isBigMer = isBigMer;
    }


	public String getBankReturnOrderId() {
		return bankReturnOrderId;
	}

	public void setBankReturnOrderId(String bankReturnOrderId) {
		this.bankReturnOrderId = bankReturnOrderId;
	}

    public String getCzOriOrderId() {
        return czOriOrderId;
    }

    public void setCzOriOrderId(String czOriOrderId) {
        this.czOriOrderId = czOriOrderId;
    }
	public boolean isMerchantModel() {
		return isMerchantModel;
	}

	public void setMerchantModel(boolean isMerchantModel) {
		this.isMerchantModel = isMerchantModel;
	}

	public String getTransBatchNo() {
		return transBatchNo;
	}

	public void setTransBatchNo(String transBatchNo) {
		this.transBatchNo = transBatchNo;
	}
	public String getCardType() {
		return cardType;
	}

	public void setCardType(String cardType) {
		this.cardType = cardType;
	}
}
